table of contents
STATFS(2) | Manual del Programador de Linux | STATFS(2) |
NOMBRE¶
statfs, fstatfs - obtiene estadísticas del sistema de ficheros
SINOPSIS¶
#include <sys/vfs.h>
int statfs(const char *path, struct statfs
*buf);
int fstatfs(int fd, struct statfs
*buf);
DESCRIPCIÓN¶
statfs devuelve información de un sistema de ficheros montado. path el el camino de cualquier fichero en el sistema de ficheros montado. buf es un puntero a una estructura statfs definida como sigue:
struct statfs {
long f_type; /* tipo sistema ficheros (ver bajo) */
long f_bsize; /* tamaño óptimo de bloque
de transferencia */
long f_blocks; /* total de bloques de datos en el sistema
de ficheros */
long f_bfree; /* bloques libres en el sf */
long f_bavail; /* bloques libres disponibles para
no-superusuarios */
long f_files; /* total de nodos de ficheros en el sf */
long f_ffree; /* nodos de ficheros libres en el sf */
fsid_t f_fsid; /* id del sistema de ficheros */
long f_namelen; /* longitud máxima de nombre de ficheros */
long f_spare[6]; /* de sobra, para más tarde */ };
Tipos de sistema de ficheros:
linux/affs_fs.h:
AFFS_SUPER_MAGIC 0xADFF linux/efs_fs.h:
EFS_SUPER_MAGIC 0x00414A53 linux/ext_fs.h:
EXT_SUPER_MAGIC 0x137D linux/ext2_fs.h:
EXT2_OLD_SUPER_MAGIC 0xEF51
EXT2_SUPER_MAGIC 0xEF53 linux/hpfs_fs.h:
HPFS_SUPER_MAGIC 0xF995E849 linux/iso_fs.h:
ISOFS_SUPER_MAGIC 0x9660 linux/minix_fs.h:
MINIX_SUPER_MAGIC 0x137F /* minix orig.*/
MINIX_SUPER_MAGIC2 0x138F /* minix 30 carac.*/
MINIX2_SUPER_MAGIC 0x2468 /* minix V2 */
MINIX2_SUPER_MAGIC2 0x2478 /* minix V2, nombres 30 carac. */ linux/msdos_fs.h:
MSDOS_SUPER_MAGIC 0x4d44 linux/ncp_fs.h:
NCP_SUPER_MAGIC 0x564c linux/nfs_fs.h:
NFS_SUPER_MAGIC 0x6969 linux/proc_fs.h:
PROC_SUPER_MAGIC 0x9fa0 linux/smb_fs.h:
SMB_SUPER_MAGIC 0x517B linux/sysv_fs.h:
XENIX_SUPER_MAGIC 0x012FF7B4
SYSV4_SUPER_MAGIC 0x012FF7B5
SYSV2_SUPER_MAGIC 0x012FF7B6
COH_SUPER_MAGIC 0x012FF7B7 linux/ufs_fs.h:
UFS_MAGIC 0x00011954 linux/xfs_fs.h:
XFS_SUPER_MAGIC 0x58465342 linux/xia_fs.h:
_XIAFS_SUPER_MAGIC 0x012FD16D
Nadie sabe lo que f_fsid se supone que contiene (vea más abajo).
Los campos no definidos para un sistema de ficheros particular se ponen a 0. fstatfs devuelve la misma información sobre un fichero abierto referenciado por el descriptor fd.
VALOR DEVUELTO¶
Si hubo éxito se devuelve cero. Si hubo error, se devuelve -1, y errno es actualizado apropiadamente.
ERRORES¶
Para statfs:
- ENOTDIR
- Un componente del camino path no es un directorio.
- ENAMETOOLONG
- path es demasiado largo.
- ENOENT
- El fichero al que se refiere path no existe.
- EACCES
- El permiso de búsqueda se deniega para un componente del camino path.
- ELOOP
- Se encontraron demasiados enlaces simbólicos al traducir path.
- EFAULT
- buf o path apuntan a una dirección inválida.
- EIO
- Ocurrió un error de E/S mientras se leía o escribía en el sistema de ficheros.
- ENOMEM
- No había suficiente memoria disponible en el núcleo.
- ENOSYS
- El sistema de ficheros sobre el que se encuentra path no soporta statfs.
Para fstatfs:
CONFORME A¶
La versión de Linux de statfs está inspirada en la de 4.4BSD (aunque no usan la misma estructura).
f_fsid¶
Solaris y POSIX 1003.1-2001 poseen una llamada al sistema statvfs que devuelve una estructura statvfs (definida en <sys/statvfs.h>) con un campo f_fsid de tipo unsigned long . Linux, SunOS, HPUX y 4.4BSD poseen una llamada al sistema statfs que devuelve una estructura statfs (definida en <sys/vfs.h>) con un campo f_fsid de tipo fsid_t , donde fsid_t está definido como struct { int val[2]; }. Lo mismo se aplica para FreeBSD, salvo que utiliza el fichero de cabecera <sys/mount.h>.
La idea general es que f_fsid contenga información aleatoria de manera que el par (f_fsid,ino) determine unívocamente un fichero. Algunos SOs usan (una variante de) el número de dispositivo, o el número de dispositivo combinado con el tipo de sistema de ficheros. Muchos SOs restringen el acceso al campo f_fsid solamente al superusuario (poniéndolo a cero para aquellos usuarios sin privilegios), ya que este campo es usado en el manejo de ficheros del sistema de ficheros cuando es exportado mediante NFS, y conceder acceso a él es un problema de seguridad.
En algunos SOs fsid puede ser usado como segundo parámetro en la llamada al sistema sysfs().
VÉASE TAMBIÉN¶
21 agosto 1997 | Linux 2.0.30 |